package com.tedu.API.thread;

/**
 * setPriority() 设置线程优先级---决定执行那个线程
 * 单线程: 创建一个线程做一件事
 * 多线程: 创建多个线程做不同的事情
 * 线程优先级范围:1~10  数值越大被执行几率越大
 *
 * 案例: 创建三个线程，分别指定三个线程优先级 max  10
 *                                     1000次： 老大一声吼，地球抖三抖
 *                                     normal  5
 *                                     1000次:  老二一出手，蚊子全飞走
 *                                     min    1
 *                                     1000次: 老三一张口，笑倒一头牛
 *       使用Lambda完成三个线程创建【多线程】
 *  总结: 创建多条线程,简称多线程"同时"并发运行时,不能主动获取CPU时间片
 *                  也不能决定时间片长度，只能被动分配!
 *       如果调整优先级，按照优先级数值大小，确定是否加大几率获取CPU时间片
 *                  几率!
 *
 */
public class Thread_Priority {
    public static void main(String[] args) {
        //创建三个线程
        Thread max=new Thread(()->{
            for (int i=0;i<1000;i++){
                System.out.println("老大一声吼，地球抖三抖");
            }
        });
        Thread normal=new Thread(()->{
            for (int i=0;i<1000;i++){
                System.out.println("老二一出手，蚊子全飞走");
            }
        });
        Thread min=new Thread(()->{
            for (int i=0;i<1000;i++){
                System.out.println("老三一张口，笑倒一头牛");
            }
        });
        //设置线程优先级: max 10   normal 5(默认)   min 1
        max.setPriority(10);  //加大对应几率，并不按顺序执行
        min.setPriority(Thread.MIN_PRIORITY);  //定死值
        //线程统一启动
        max.start();
        normal.start();
        min.start();
    }
}
